home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 October / macformat-029.iso / mac / Shareware City / Developers / ReWrite 0.2 / Sample Project / r.setup < prev   
Encoding:
Text File  |  1995-06-29  |  1.9 KB  |  60 lines  |  [TEXT/ReWr]

  1. (* =======================small examples =================== *)
  2.  
  3. factorial[0] -> 1;
  4. factorial[n:int] -> n*factorial[n-1];
  5.  
  6. fib[0] -> 1;
  7. fib[1] -> 1;
  8. fib[n:int] -> fib[n-1]+fib[n-2];
  9.  
  10. joinx[x:lis,y:lis] -> {.x,.y};
  11.  
  12. (* ========================== nprime ====================== *)
  13.  
  14. nprime[n:int] -> primeaux[{},0,n,2];
  15.  
  16. (* primeaux[primes found so far, sqrt, number found, this try] *)
  17. primeaux[l:lis,s:int,0,k:int] -> k-1;
  18. primeaux[l:lis,s:int,n:int,k:int]::k>s*s -> primeaux[l,s+1,n,k];
  19. primeaux[l:lis,s:int,n:int,k:int] -> primeaux2[primetest[s,k,{},.l],s,n,k];
  20.  
  21. (* primeaux2[primes found so far, is prime?, sqrt, number found, this try] *)
  22. primeaux2[l:lis,0,s:int,n:int,k:int] -> primeaux[l,s,n,k+1];
  23. primeaux2[l:lis,1,s:int,n:int,k:int] -> primeaux[{.l,k},s,n-1,k+1];
  24.  
  25. (* primeaux2[sqrt, this try, list of primes checked, primes unchecked] *)
  26. primetest[s:int,k:int,l:lis] -> l,1;
  27. primetest[s:int,k:int,l:lis,a:int,.b]::a>s -> {.l,a,.b},1;
  28. primetest[s:int,k:int,l:lis,a:int,.b]::k%a=0 -> {.l,a,.b},0;
  29. primetest[s:int,k:int,l:lis,a:int,.b] -> primetest[s,k,{.l,a},.b];
  30.  
  31. (* ==========================  atoi2 ======================= *)
  32.  
  33. atoi2[.x] -> atoixx[xatoi[.x]];
  34.  
  35. atoixx[x:int] -> x;
  36. atoixx[.x] -> "error - not a number";
  37.  
  38. xatoi["-",.n] -> xnegx[xatoi[.n]];
  39. xatoi["$",.a] -> xatoih[0,.a];
  40. xatoi["%",.a] -> xatoib[0,.a];
  41. xatoi[x:char,.a]::xisdigit[x] -> xatoix[0,x,.a];
  42. xatoi[.a] -> {},.a;
  43.  
  44. xnegx[{},.rest] -> {},.rest;
  45. xnegx[a:int,.rest] -> -a,.rest;
  46.  
  47. xatoix[x:int,d:char,.n]::xisdigit[d] -> xatoix[10*x+d:int-"0":int,.n];
  48. xatoix[x:int,.n] -> x,.n;
  49.  
  50. xatoih[x:int,d:char,.n]::xisdigit[d] -> xatoih[16*x+d:int-"0":int,.n];
  51. xatoih[x:int,d:char,.n]::d>="A" & d<="F" -> xatoih[16*x+10+d:int-"A":int,.n];
  52. xatoih[x:int,d:char,.n]::d>="a" & d<="f" -> xatoih[16*x+10+d:int-"a":int,.n];
  53. xatoih[x:int,.n] -> x,.n;
  54.  
  55. xatoib[x:int,"0",.n] -> xatoib[2*x,.n];
  56. xatoib[x:int,"1",.n] -> xatoib[2*x+1,.n];
  57. xatoib[x:int,.n] -> x,.n;
  58.  
  59. xisdigit[d:char] -> d>="0" & d<="9";
  60.